#pragma once
#include "IImplementation.h"
#include "IAbstraction.h"
/**
 * You can extend the Abstraction without changing the Implementation classes.
 */
class ExtendedAbstraction : public IAbstraction {
public:
    ExtendedAbstraction(IImplementation* implementation) : IAbstraction(implementation) {
    }
    std::string Operation() const override {
        return "ExtendedAbstraction: Extended operation with:\n" +
            this->implementation_->OperationImplementation();
    }
};